/**
    @file flowgraph.h 
    @brief Function prototypes to represent control flow graphs.
 */
#include "temp.h"
#include "graph.h"
#include "assem.h"

/**
    Get the def variables for a node
    @param n node to lookup
    @return a list of temp variable  
*/
Temp_tempList FG_def(G_node n);

/**
    Get the use variables for a node
    @param n node to lookup
    @return a list of temp variable  
*/
Temp_tempList FG_use(G_node n);

/**
    Whether a node is a MOVE instruction
    @return a boolean representing if it's a MOVE
*/
bool FG_isMove(G_node n);

/**
    Get the corresponding assembly instruction for a node
    @return a abstract assembly instruction variable
*/
AS_instr FG_getInstr(G_node n);

/**
    Generate the flow graph for a given assembly instructions list
    @return a flow graph
*/
G_graph FG_AssemFlowGraph(AS_instrList il);
